/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package LOGIN;
import SQL.Conexion;
import DTO.*;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
/**
 *
 * @author Pipe
 */
public class Administrador 
{
    public static void IngresarUsuario(usuarioDTO user, usuarioDTO usuarioSesion)
    {
        Connection conexion = Conexion.getConexion();
        try 
        {
            String sql = "INSERT INTO usuario (rut_usua, apell_paterno_usua, apell_materno_usua, nombre_usua, "
                    + "fech_nac_usua, sexo_usua, tel_part_usua, tel_trab_usua, tel_mov_usua, fax_usua, e_mail_usua, "
                    + "est_usuario_usua, usuario_usua, contrasena_usua, fk_perfil, user_historial, nombre_usuario_historial, "
                    + "perfil_historial) "
                    + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement insertar = conexion.prepareStatement(sql);
            insertar.setString(1, user.getRut_usua());
            insertar.setString(2, user.getApell_paterno_usua());
            insertar.setString(3, user.getApell_materno_usua());
            insertar.setString(4, user.getNombre_usua());
            insertar.setString(5, user.getFech_nac_usua());
            insertar.setString(6, user.getSexo_usua());
            insertar.setInt(7, user.getTel_part_usua());
            insertar.setInt(8, user.getTel_trab_usua());
            insertar.setInt(9, user.getTel_mov_usua());
            insertar.setInt(10, user.getFax_usua_int());
            insertar.setString(11, user.getE_mail_usua());
            insertar.setString(12, user.getEst_usuario_usua());
            insertar.setString(13, user.getUsuario_usua());
            insertar.setString(14, user.getContrasena_usua());
            insertar.setInt(15, user.getPerfil().getCod_perfil());
            insertar.setString(16, usuarioSesion.getUsuario_usua());
            insertar.setString(17, usuarioSesion.getUsuario_usua());
            insertar.setString(18, usuarioSesion.getPerfil().getNom_perfil());
            insertar.execute();
        } 
        catch (Exception e) 
        {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas al Ingresar Usuario: " + e);
        }
    }
    
    public static void ModificarUsuario(usuarioDTO user, usuarioDTO usuarioSesion)
    {
        Connection conexion = Conexion.getConexion();
        try 
        {
            String sql = "UPDATE usuario SET apell_paterno_usua=?, "
                    + "apell_materno_usua=?, nombre_usua=?, fech_nac_usua=?, "
                    + "sexo_usua=?, tel_part_usua=?, tel_trab_usua=?, tel_mov_usua=?, "
                    + "fax_usua=?, e_mail_usua=?, est_usuario_usua=?, usuario_usua=?, "
                    + "contrasena_usua=?, fk_perfil=?,user_historial=?, nombre_usuario_historial=?, perfil_historial=? "
                    + "WHERE rut_usua=?;";
            PreparedStatement modificar = conexion.prepareStatement(sql);
            modificar.setString(1, user.getApell_paterno_usua());
            modificar.setString(2, user.getApell_materno_usua());
            modificar.setString(3, user.getNombre_usua());
            modificar.setString(4, user.getFech_nac_usua());
            modificar.setString(5, user.getSexo_usua());
            modificar.setInt(6, user.getTel_part_usua());
            modificar.setInt(7, user.getTel_trab_usua());
            modificar.setInt(8, user.getTel_mov_usua());
            modificar.setInt(9, user.getFax_usua_int());
            modificar.setString(10, user.getE_mail_usua());
            modificar.setString(11, user.getEst_usuario_usua());
            modificar.setString(12, user.getUsuario_usua());
            modificar.setString(13, user.getContrasena_usua());
            modificar.setInt(14, user.getPerfil().getCod_perfil());
            modificar.setString(15, usuarioSesion.getUsuario_usua());
            modificar.setString(16, usuarioSesion.getContrasena_usua());
            modificar.setString(17, usuarioSesion.getPerfil().getNom_perfil());
            modificar.setString(18, user.getRut_usua());
            modificar.execute();
        } 
        catch (Exception e) 
        {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas al Modificar Usuario: " + e);
        }
    }
    
    public static void EliminarUsuario(usuarioDTO user)
    {
        Connection conexion = Conexion.getConexion();
        try 
        {
            String sql = "DELETE FROM usuario WHERE rut_usua=?;";
            PreparedStatement eliminar = conexion.prepareStatement(sql);
            eliminar.setString(1, user.getRut_usua());
            eliminar.execute();
        } 
        catch (Exception e) 
        {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas al Eliminar Usuario: " + e);
        }
    }
    
    public static usuarioDTO BuscarUsuarioPorRut(String rut)
    {
        Connection conexion = Conexion.getConexion();
        usuarioDTO user = new usuarioDTO();
        try 
        {
            String sql = "SELECT rut_usua, apell_paterno_usua, apell_materno_usua, nombre_usua, fech_nac_usua, "
                    + "sexo_usua, tel_part_usua, tel_trab_usua, tel_mov_usua, fax_usua, e_mail_usua, est_usuario_usua, "
                    + "usuario_usua, contrasena_usua, id_perfil, nom_perfil FROM usuario, perfil "
                    + "WHERE fk_perfil=id_perfil AND rut_usua=?";
            PreparedStatement login = conexion.prepareStatement(sql);
            login.setString(1, rut);
            ResultSet resultado = login.executeQuery();
            while (resultado.next()) 
            {
                user.setRut_usua(resultado.getString(1));
                user.setApell_paterno_usua(resultado.getString(2));
                user.setApell_materno_usua(resultado.getString(3));
                user.setNombre_usua(resultado.getString(4));
                user.setFech_nac_usua(resultado.getString(5));
                user.setSexo_usua(resultado.getString(6));
                user.setTel_part_usua(resultado.getInt(7));
                user.setTel_trab_usua(resultado.getInt(8));
                user.setTel_mov_usua(resultado.getInt(9));
                user.setFax_usua_int(resultado.getInt(10));
                user.setE_mail_usua(resultado.getString(11));
                user.setEst_usuario_usua(resultado.getString(12));
                user.setUsuario_usua(resultado.getString(13));
                user.setContrasena_usua(resultado.getString(14));
                user.getPerfil().setCod_perfil(resultado.getInt(15));
                user.getPerfil().setNom_perfil(resultado.getString(16));
            }
            
        } 
        catch (Exception e) 
        {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas con encontrar usuario: " + e);
        }
        return user;
    }
    
    public static ArrayList<usuarioDTO> ListarUsuarios(String estado)
    {   
        Connection conexion = Conexion.getConexion();
        ArrayList<usuarioDTO> salida = new ArrayList<>();
        try 
        {
            String sql = "SELECT rut_usua, apell_paterno_usua, apell_materno_usua, nombre_usua, fech_nac_usua, "
                    + "sexo_usua, tel_part_usua, tel_trab_usua, tel_mov_usua, fax_usua, e_mail_usua, est_usuario_usua, "
                    + "usuario_usua, contrasena_usua, id_perfil, nom_perfil FROM usuario, perfil "
                    + "WHERE fk_perfil=id_perfil AND est_usuario_usua=?";
            PreparedStatement listar = conexion.prepareStatement(sql);
            listar.setString(1, estado);
            ResultSet resultado = listar.executeQuery();
            while(resultado.next())
            {
                usuarioDTO usuario = new usuarioDTO();
                usuario.setRut_usua(resultado.getString(1));
                usuario.setApell_materno_usua(resultado.getString(2));
                usuario.setApell_paterno_usua(resultado.getString(3));
                usuario.setNombre_usua(resultado.getString(4));
                usuario.setFech_nac_usua(resultado.getString(5));
                usuario.setSexo_usua(resultado.getString(6));
                usuario.setTel_part_usua(resultado.getInt(7));
                usuario.setTel_trab_usua(resultado.getInt(8));
                usuario.setTel_mov_usua(resultado.getInt(9));
                usuario.setFax_usua_int(resultado.getInt(10));
                usuario.setE_mail_usua(resultado.getString(11));
                usuario.setEst_usuario_usua(resultado.getString(12));
                usuario.setUsuario_usua(resultado.getString(13));
                usuario.setContrasena_usua(resultado.getString(14));
                usuario.getPerfil().setCod_perfil(resultado.getInt(15));
                usuario.getPerfil().setNom_perfil(resultado.getString(16));
                salida.add(usuario);
            }
        } 
        catch (Exception e) 
        {
            javax.swing.JOptionPane.showMessageDialog(null, "Problemas al buscar usuarios: " + e);
        }
        return salida;
    }
    
}
